package com.hands.commen.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class ZipUtils {
    //压缩
      /*public static String compress(String str) throws IOException {    
        if (str == null || str.length() == 0) {    
          return str;    
        }    
        ByteArrayOutputStream out = new ByteArrayOutputStream();    
        GZIPOutputStream gzip = new GZIPOutputStream(out);    
        gzip.write(str.getBytes());    
        gzip.close();            
        return out.toString("UTF-8");    
      }  */

    //压缩
    public static byte[] compress(String str) {
        try {
            if (str == null || str.length() == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes());
            gzip.close();
            return out.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    //解压缩
    public static String uncompress(byte[] str) {
        try {
            if (str == null) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(str);
            GZIPInputStream gzipInputStream = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;
            while ((n = gzipInputStream.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            // toString()使用平台默认编码，也可以显式的指定如toString("GBK")
            return out.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
